package net.dgg.rz.evaluating.dao;

import org.apache.ibatis.annotations.Param;

import net.dgg.rz.evaluating.entity.EvaluatingOptionsChannel;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.util.*;

/**
 * Describe: 选项渠道关联表Mapper接口
 * Created by zyou on 2019-05-22 .
 **/
@Component
public interface EvaluatingOptionsChannelDao {

    /**
     * <p>
     * 全量插入一条记录
     * </p>
     *
     * @param entity 实体对象
     * @return
     */
    Integer insertAllColumn(EvaluatingOptionsChannel entity);

    /**
     * <p>
     * 批量插入多条记录
     * </p>
     *
     * @param entityList 实体对象
     * @return
     */
    Integer insertBatch(List<EvaluatingOptionsChannel> entityList);

    /**
     * <p>
     * 根据 主键ID 删除
     * </p>
     *
     * @param id 主键ID
     * @return
     */
    Integer deleteById(Serializable id);

    /**
     * <p>
     * 根据 columnMap 条件，删除记录
     * </p>
     *
     * @param columnMap 表字段 map 对象
     * @return
     */
    Integer deleteByMap(Map<String, Object> columnMap);

    /**
     * <p>
     * 删除（根据主键ID 批量删除）
     * </p>
     *
     * @param ids 主键ID列表
     * @return
     */
    Integer deleteBatchIds(@Param("ids") Collection<? extends Serializable> ids);

    /**
     * <p>
     * 根据 主键ID 修改
     * </p>
     *
     * @param entity 实体对象
     * @return
     */
    Integer updateById(EvaluatingOptionsChannel entity);

    /**
     * <p>
     * 根据 主键ID 全量修改
     * </p>
     *
     * @param entity 实体对象
     * @return
     */
    Integer updateAllColumnById(EvaluatingOptionsChannel entity);

    /**
     * <p>
     * 根据ID 批量更新
     * </p>
     *
     * @param entityList 实体对象列表
     * @return boolean
     */
    Integer updateBatchById(List<EvaluatingOptionsChannel> entityList);

    /**
     * <p>
     * 批量更新
     * </p>
     *
     * @param entityList 实体对象列表
     * @return boolean
     */
    Integer updateBatch(List<EvaluatingOptionsChannel> entityList);

    /**
     * <p>
     * 根据 columnMap 条件，更新记录
     * </p>
     *
     * @param entity    实体对象
     * @param columnMap 实体对象封装操作类（可以为 null）
     * @return
     */
     Integer update(@Param("et") EvaluatingOptionsChannel entity,@Param("map") Map<String, Object> columnMap);

    /**
     * <p>
     * 根据 主键 ID 查询
     * </p>
     *
     * @param id 主键ID
     * @return
     */
    EvaluatingOptionsChannel selectById(Serializable id);

    /**
     * <p>
     * 查询（根据ID 批量查询）
     * </p>
     *
     * @param ids 主键ID列表
     * @return
     */
    List<EvaluatingOptionsChannel> selectBatchIds(@Param("ids") Collection<? extends Serializable> ids);

    /**
     * <p>
     * 查询（根据 columnMap 条件）
     * </p>
     *
     * @param columnMap 表字段 map 对象
     * @return
     */
    List<EvaluatingOptionsChannel> selectByMap(Map<String, Object> columnMap);

    /**
     * <p>
     * 根据 entity 条件，查询一条记录
     * </p>
     *
     * @param entity 实体对象
     * @return
     */
    EvaluatingOptionsChannel selectOne(EvaluatingOptionsChannel entity);
    /**
     * 查询选项所关联的渠道
     * @param optionsId
     * @return
     */
    List<EvaluatingOptionsChannel> findChannelByOptionsId(Long optionsId);
    /**
     * 查询选项所关联的渠道
     * @param optionsId
     * @return
     */
    List<Long> findChannelIdsOptionsId(Long optionsId);
}
